package com.ruoyi.wb.service;

import com.ruoyi.wb.domain.WbPlan;
import com.ruoyi.wb.dto.WbClassifyYearDto;
import com.ruoyi.wb.dto.WbPlanAuditDto;
import com.ruoyi.wb.dto.WbPlanContentDto;
import com.ruoyi.wb.dto.WbPlanDto;
import com.ruoyi.wb.vo.WbContractVo;
import com.ruoyi.wb.vo.WbPlanAuditLogVo;
import com.ruoyi.wb.vo.WbPlanDataStatisticsVo;
import com.ruoyi.wb.vo.WbPlanVo;

import java.util.List;

/**
 * 维保计划Service接口
 * 
 * @author ruoyi
 * @date 2024-10-14
 */
public interface IWbPlanService {
    /**
     * 查询维保计划
     *
     * @param id 维保计划主键
     * @return 维保计划
     */
    public WbPlan selectWbPlanById(Long id);

    /**
     * 查询维保计划列表
     *
     * @param wbPlan 维保计划
     * @return 维保计划集合
     */
    public List<WbPlan> selectWbPlanList(WbPlan wbPlan);

    /**
     * 新增维保计划
     *
     * @param wbPlan 维保计划
     * @return 结果
     */
    public int insertWbPlan(WbPlan wbPlan);

    /**
     * 修改维保计划
     *
     * @param wbPlan 维保计划
     * @return 结果
     */
    public int updateWbPlan(WbPlan wbPlan);

    /**
     * 批量删除维保计划
     *
     * @param ids 需要删除的维保计划主键集合
     * @return 结果
     */
    public int deleteWbPlanByIds(Long[] ids);

    /**
     * 删除维保计划信息
     *
     * @param id 维保计划主键
     * @return 结果
     */
    public int deleteWbPlanById(Long id);

    /**
     * 查询当前登录用户维保信息
     *
     * @param wbPlan
     * @return
     */
    List<WbPlan> selectUserMaintainInfoPage(WbPlan wbPlan, Long userId);

    /**
     * 上传任务表单信息查询
     *
     * @param planId
     * @return
     */
    WbContractVo getJobInfoByPlanId(Long planId);

    /**
     * 提交任务
     *
     * @param dtos
     * @return
     */
    boolean submitJob(List<WbPlanContentDto> dtos, Long userId);

    /**
     * 检查
     *
     * @param userId
     * @return
     */
    List<WbPlan> examineJob(Long userId, String key, String type);

    /**
     * 数据统计
     *
     * @return
     */
    WbPlanDataStatisticsVo dataStatistics(Long userId);

    /**
     * 维保计划审核通过
     *
     * @param dto
     * @return
     */
    int planAudit(WbPlanAuditDto dto);

    /**
     * 维保计划驳回
     *
     * @param dto
     * @return
     */
    boolean reject(WbPlanAuditDto dto);

    /**
     * 批量选择任务为今日任务
     *
     * @param planIds
     * @return
     */
    boolean todayJob(List<Long> planIds);

    /**
     * 今日维保
     *
     * @param userId
     * @return
     */
    List<WbPlan> todayPlan(Integer execStatus, Long userId);

    /**
     * 新增维保
     *
     * @param dto
     * @return
     */
    boolean savePlan(WbPlanDto dto);

    /**
     * 修改维保计划
     *
     * @param dto
     * @return
     */
    boolean updatePlan(WbPlanDto dto);

    /**
     * 批量删除维保计划
     *
     * @param ids
     * @return
     */
    boolean deletePlan(List<Long> ids);

    /**
     * 获取维保计划详情
     *
     * @param planId
     * @return
     */
    WbPlanVo getPlanInfo(Long planId);

    /**
     * 获取维保计划审核记录
     *
     * @param planId
     * @return
     */
    List<WbPlanAuditLogVo> getPlanAuditLog(Long planId);

    /**
     * 获取企业维保计划
     *
     * @param userId
     * @return
     */
    List<WbPlan> getEnterprisePlan(WbPlan wbPlan, Long userId);

    /**
     * 查询当前登录用户审核信息
     *
     * @param execStatus
     * @param userId
     * @return
     */
    List<WbPlan> selectUserAuditPage(Integer execStatus, Long userId);

    /**
     * 统计维保审核数据
     *
     * @param userId
     * @return
     */
    WbPlanVo statisticsMaintenanceAuditNumber(Long userId);

    //预览月检
    String previewMonthly(Long planId);

    //预览年检
    String previewYearly(Long planId);

    /**
     * 新增个人目录
     *
     * @return
     */
    boolean saveCatalog(List<WbClassifyYearDto> dtoList);

    List<WbPlan> selectIfDownLoud(WbPlan wbPlan);

    /**
     * selectUserAuditPageCount
     */
    int selectUserAuditPageCount();
}



